package org.springblade.tms.module.sap.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.validation.annotation.Validated;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @projectName: BladeX
 * @package: org.springblade.tms.module.sap.dto
 * @className: DemandListDto
 * @author: yr
 * @description: 需求单数据接口传入参数
 * @date: 2022/3/11 11:32
 */
@Data
@Validated
public class DemandListDto {
    /**
     * 货运订单号去0后
     */
    private String orderNo;
    /**
     * 货运订单
     */
    @NotNull
    @ApiModelProperty(value = "货运订单")
    @JsonProperty("tor_id")
    private Long torId;
    /**
     * 货运订单类型
     */
    @NotBlank
    @ApiModelProperty(value = "货运订单类型")
    @JsonProperty("tor_type")
    private String orderType;
    /**
     * 交货单去0后
     */
    private String deliverNo;
    /**
     * 交货单
     */
    @JsonProperty("laveltxt")
    @NotNull
    @ApiModelProperty(value = "交货单")
    private Long laveltxt;
    /**
     * 源位置
     */
    @JsonProperty("log_locid_s")
    @NotBlank
    @ApiModelProperty(value = "源位置")
    private String startLocationNo;
    /**
     * 源位置名称
     */
    @JsonProperty("name1_s")
    @NotBlank
    @ApiModelProperty(value = "源位置名称")
    private String startLocationName;
    /**
     * 源位置区域（省份）
     */
    @JsonProperty("region_s")
    @NotBlank
    @ApiModelProperty(value = "源位置区域（省份）")
    private String startLocationArea;
    /**
     * 源位置城市
     */
    @JsonProperty("mc_city1_s")
    @NotBlank
    @ApiModelProperty(value = "源位置城市")
    private String startLocationCity;
    /**
     * 源位置街道
     */
    @JsonProperty("mc_street_s")
    @NotBlank
    @ApiModelProperty(value = "源位置街道")
    private String startLocationStreet;
    /**
     * 目标位置
     */
    @JsonProperty("log_locid_d")
    @ApiModelProperty(value = "目标位置")
    private String targetLocationNo;
    /**
     * 目标位置名称
     */
    @JsonProperty("name1_t")
    @NotBlank
    @ApiModelProperty(value = "目标位置名称")
    private String targetLocationName;
    /**
     * 目标位置区域（省份）
     */
    @JsonProperty("region_t")
    @NotBlank
    @ApiModelProperty(value = "目标位置区域（省份）")
    private String targetLocationArea;
    /**
     * 目标位置城市
     */
    @JsonProperty("mc_city1_t")
    @NotBlank
    @ApiModelProperty(value = "目标位置城市")
    private String targetLocationCity;

    /**
     * 目标位置街道
     */
    @JsonProperty("mc_street_t")
    @NotBlank
    @ApiModelProperty(value = "目标位置街道")
    private String targetLocationStreet;
    /**
     * 承运商ID
     */
    @JsonProperty("tspid")
    @NotBlank
    @ApiModelProperty(value = "承运商编码")
    private String carrierNo;
    /**
     * 承运商名称
     */
    @JsonProperty("name_org1")
    @ApiModelProperty(value = "承运商名称")
    private String carrierName;
    /**
     * 计划提货日期
     */
    @JsonProperty("plan_trans_time_p")
    @NotNull
    @ApiModelProperty(value = "计划提货日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime planGetGoodsDateStart;
    /**
     * 计划收货日期
     */
    @JsonProperty("plan_trans_time_d")
    @NotNull
    @ApiModelProperty(value = "计划收货日期")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime planGetGoodsDateEnd;
    /**
     * 备注
     */
    @JsonProperty("zremark")
    @ApiModelProperty(value = "备注")
    private String remark;
    /**
     * 行项目
     */
    @JsonProperty("item")
    @NotNull
    @ApiModelProperty(value = "行项目")
    private List<DemandListItemDto> item;
    /**
     * 运输方式
     */
    @ApiModelProperty(value = "运输方式")
    private String ysfsDes;
    /**
     * 联系人
     */
    @ApiModelProperty(value = "联系人")
    private String khlxr;
    /**
     * 联系方式
     */
    @ApiModelProperty(value = "联系方式")
    private String khlxfs;
    /**
     * 提货地址
     */
    @ApiModelProperty(value = "提货地址")
    private String thdz;
    /**
     * 包装方式
     */
    @ApiModelProperty(value = "包装方式")
    private String bzfs;
    /**
     * 包装数量
     */
    @ApiModelProperty(value = "包装数量")
    private String bzsl;
    /**
     * 收发工厂
     */
    @ApiModelProperty(value = "收发工厂")
    @JsonProperty("werks")
    private String werks;
    /**
     * 收发工厂描述
     */
    @ApiModelProperty(value = "收发工厂描述")
    @JsonProperty("werks_name1")
    private String werksName;
    /**
     * 收发工厂描述
     */
    @ApiModelProperty(value = "客户名称")
    @JsonProperty("kunnr_name")
    private String customerName;
    /**
     * 收发工厂描述
     */
    @ApiModelProperty(value = "国际贸易条款")
    @JsonProperty("inco1")
    private String tradeTerms;
    /**
     * 收发工厂描述
     */
    @ApiModelProperty(value = "国际贸易条款附加信息")
    @JsonProperty("inco2")
    private String tradeTermsItem;

    /**
     * 收发工厂描述
     */
    @ApiModelProperty(value = "提单号")
    @JsonProperty("tdh")
    private String billOfLadingNumber;

    /**
     * 收发工厂描述
     */
    @ApiModelProperty(value = "合同公司")
    @JsonProperty("ht_company")
    private String contractCompany;

    @ApiModelProperty("订单号去0后")
    private String orderNumber;

    @ApiModelProperty("订单号")
    @JsonProperty("orig_btd_id")
    private Long origBtdId;
}
